package org.lboot.rbac.module.role;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.hibernate.Hibernate;
import org.lboot.jpa.converter.JpaListStringConverter;
import org.lboot.jpa.entity.LongBaseEntity;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * 用户角色实体类
 * @author kindear
 * @TODO 权限限制 存在deptId 可选范围？
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Entity
@Table(name = "sys_role")
@ApiModel(value = "用户角色实体",description = "用户角色信息管理")
@EntityListeners(AuditingEntityListener.class)
public class SysRole extends LongBaseEntity implements Serializable {

    @ApiModelProperty("角色归属")
    @Column(name = "dept_id")
    Long deptId;
    /** 角色名称 **/
    @ApiModelProperty("角色名称")
    @Column(name = "role_name")
    String roleName;

    @ApiModelProperty("角色标识")
    @Column(name = "role_key")
    String roleKey;

    /** 角色描述 **/
    @ApiModelProperty("角色描述")
    @Column(name = "role_description")
    String roleDescription;

    /** 角色权限列表 **/
    @ApiModelProperty("角色权限")
    @Column(name = "permissions",length = 2048)
    @Convert(converter = JpaListStringConverter.class)
    List<String> permissions;

    /** 角色排序 **/
    @ApiModelProperty("角色排序")
    @Column(name = "role_sort")
    Integer roleSort;


    /**
     * 角色状态 可选 0 禁用 1 正常
     */
    @ApiModelProperty("角色状态")
    @Column(name = "status",nullable = false)
    private Integer status;

}
